bitkeeper revision 1.1159.276.1 (4248a7f9-4Jb7VaVyStfIWsk_XitsQ)
authormwilli2@equilibrium.research <mwilli2@equilibrium.research>
Tue, 29 Mar 2005 00:57:29 +0000 (00:57 +0000)
committermwilli2@equilibrium.research <mwilli2@equilibrium.research>
Tue, 29 Mar 2005 00:57:29 +0000 (00:57 +0000)
Make sysrq work.

Signed-off-by: <mark.williamson@cl.cam.ac.uk>
linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c
tools/python/xen/lowlevel/xu/xu.c
xen/include/public/io/domain_controller.h

index 07aae9d0c60d2fb52f52db75ed2c95203dbdd5e4..d732070fe4dd55ca1e15c53e120c31b076d22a96 100644 (file)
@@ -242,7 +242,7 @@ static void shutdown_handler(ctrl_msg_t *msg, unsigned long id)
     else if ( (pending_sysrq == -1) && 
               (msg->subtype == CMSG_SHUTDOWN_SYSRQ) )
     {
-        pending_sysrq = msg->msg[0];
+        pending_sysrq = ((shutdown_sysrq_t *)&msg->msg[0])->key;
         schedule_work(&sysrq_work);
     }
     else
index 2c3ee6b33f9a9b15f714387148a28df6540016c3..79c18795c92b6030f7ce600f30e628ec6a070033 100644 (file)
@@ -671,6 +671,9 @@ static PyObject *xu_message_new(PyObject *self, PyObject *args)
         P2C(mem_request_t, target, u32);
         P2C(mem_request_t, status, u32);
         break;
+    case TYPE(CMSG_SHUTDOWN, CMSG_SHUTDOWN_SYSRQ):
+        P2C(shutdown_sysrq_t, key, char);
+        break;
     }
 
     if ( dict_items_parsed != PyDict_Size(payload) )
index c3494e34ca07aae8a60e38a03ed3d695c2961ce4..58652a530ee0ac5f216c872531273180b1233823 100644 (file)
@@ -545,6 +545,10 @@ typedef struct {
                                     /* SHUTDOWN_suspend.                     */
 #define CMSG_SHUTDOWN_SYSRQ     3
 
+typedef struct {
+    char key;      /* 0: sysrq key */
+    char __pad[3]; /* 1: */
+} PACKED shutdown_sysrq_t; /* 4 bytes */
 
 /******************************************************************************
  * MEMORY CONTROLS